ফাংশন ওভারলোডিং C++ প্রোগ্রামিংয়ে একটি ধারণা, যার মাধ্যমে একই নামে একাধিক ফাংশন ঘোষণা করা যায়, তবে তাদের প্যারামিটারের সংখ্যা বা ধরনে পার্থক্য থাকতে হয়। অর্থাৎ, ফাংশনগুলোর কাজ এক বা একই ধরনের হতে পারে, তবে প্যারামিটার আলাদা হলে ফাংশন ওভারলোডিংয়ের মাধ্যমে তাদের আলাদা আলাদা ব্যবহারের সুযোগ থাকে।
ফাংশন ওভারলোডিং সাধারণত প্যারামিটারের সংখ্যা বা প্যারামিটারের ধরনে পার্থক্য রেখে করা হয়।
#include <iostream>
using namespace std;
int add(int a, int b) { // দুটি প্যারামিটার সহ ফাংশন
return a + b;
}
int add(int a, int b, int c) { // তিনটি প্যারামিটার সহ ফাংশন
return a + b + c;
}
int main() {
cout << "Sum of 2 and 3: " << add(2, 3) << endl; // Output: 5
cout << "Sum of 2, 3, and 4: " << add(2, 3, 4) << endl; // Output: 9
return 0;
}
বর্ণনা:
add
নামে দুটি ফাংশন ওভারলোড করা হয়েছে। প্রথম ফাংশনে দুটি int
প্যারামিটার এবং দ্বিতীয় ফাংশনে তিনটি int
প্যারামিটার রয়েছে।add(2, 3)
কল করলে প্রথম ফাংশনটি কল হবে, আর add(2, 3, 4)
কল করলে দ্বিতীয় ফাংশনটি কল হবে।#include <iostream>
using namespace std;
int multiply(int a, int b) { // ইন্টিজার প্যারামিটার সহ ফাংশন
return a * b;
}
double multiply(double a, double b) { // ডাবল প্যারামিটার সহ ফাংশন
return a * b;
}
int main() {
cout << "Multiplication of 3 and 4: " << multiply(3, 4) << endl; // Output: 12
cout << "Multiplication of 2.5 and 3.5: " << multiply(2.5, 3.5) << endl; // Output: 8.75
return 0;
}
বর্ণনা:
multiply
নামে দুটি ফাংশন আছে। প্রথম ফাংশনটি int
টাইপ প্যারামিটার নেয় এবং দ্বিতীয়টি double
টাইপ প্যারামিটার নেয়।multiply(3, 4)
কল করলে ইন্টিজার প্যারামিটার সহ ফাংশনটি এবং multiply(2.5, 3.5)
কল করলে ডাবল প্যারামিটার সহ ফাংশনটি কল হবে।ক্লাসের সাথে ফাংশন ওভারলোডিং ব্যবহার করে কাস্টম ডেটা টাইপের উপরও কাজ করা যায়।
#include <iostream>
#include <string>
using namespace std;
class Printer {
public:
void print(int value) { // ইন্টিজার প্রিন্ট করার জন্য
cout << "Integer: " << value << endl;
}
void print(string value) { // স্ট্রিং প্রিন্ট করার জন্য
cout << "String: " << value << endl;
}
void print(double value) { // ডাবল প্রিন্ট করার জন্য
cout << "Double: " << value << endl;
}
};
int main() {
Printer printer;
printer.print(42); // Output: Integer: 42
printer.print("Hello"); // Output: String: Hello
printer.print(3.14159); // Output: Double: 3.14159
return 0;
}
বর্ণনা:
Printer
ক্লাসে print
নামে তিনটি ফাংশন ওভারলোড করা হয়েছে, যা ইন্টিজার, স্ট্রিং এবং ডাবল ডেটা প্রিন্ট করতে সক্ষম।print
নাম ব্যবহার করে বিভিন্ন ধরনের ডেটা প্রিন্ট করা হয়েছে।প্যারামিটার সিগনেচারের ভিন্নতা: ফাংশনের প্যারামিটার সংখ্যা বা টাইপ ভিন্ন হতে হবে। শুধুমাত্র রিটার্ন টাইপ আলাদা হলে ফাংশন ওভারলোড করা যাবে না।
ডিফল্ট প্যারামিটার: যদি ফাংশনে ডিফল্ট প্যারামিটার থাকে তবে ফাংশন ওভারলোডিং সমস্যাযুক্ত হতে পারে।
রেফারেন্স ও কনস্ট্যান্ট ব্যবহারে সতর্কতা: প্যারামিটারের কনস্ট্যান্ট বা রেফারেন্স ব্যবহারের সময় ফাংশন ওভারলোডিং ভিন্নতার ভিত্তিতে ফাংশন নির্বাচন করতে পারে।
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
// নিচের ফাংশন ওভারলোডিং ব্যর্থ হবে, কারণ শুধুমাত্র রিটার্ন টাইপ আলাদা
double add(int a, int b) {
return a + b;
}
int main() {
cout << add(5, 10) << endl;
return 0;
}
বর্ণনা:
add
ফাংশনের মধ্যে শুধুমাত্র রিটার্ন টাইপ আলাদা, যা বৈধ নয়। ফাংশন ওভারলোডিংয়ের জন্য প্যারামিটারের সংখ্যা বা টাইপ ভিন্ন হতে হবে।ফাংশন ওভারলোডিং প্রোগ্রামিংকে আরও সুশৃঙ্খল, পরিষ্কার, এবং কার্যকর করে তোলে, যা বিশেষত বড় এবং জটিল প্রোগ্রাম ব্যবস্থাপনা সহজ করতে সহায়ক।
common.read_more